package com.tbit.main.service;

import com.tbit.main.pojo.Account;

import java.util.List;
import java.util.Map;

/**
 * 电子围栏
 *
 * @author Leon
 * 2019年10月16日 下午8:08:17
 */
public interface AccountService {

    /**
     * 根据代理商id批量查询
     *
     * @param accountIds
     * @return
     */
    List<Account> getByAccountIds(List<Integer> accountIds);

    /**
     * 根据代理商id批量查询
     *
     * @param accountIds
     * @return
     */
    List<Account> getAccountIds(List<Integer> accountIds);

    /**
     * 根据父id查询
     *
     * @param parentId
     * @return
     */
    List<Account> getByParentId(Integer parentId);

    /**
     * 查询品牌下所有运营区域
     *
     * @param accountId
     * @return
     */
    List<Account> getBrandAgent(Integer accountId);

    /**
     * 根据id查询
     *
     * @param accountId
     * @return
     */
    Account getByAccountId(Integer accountId);

    /**
     * 查询账号绑定运营区域
     *
     * @param accountUserId
     * @return
     */
    List<Account> getHolderAgent(Integer accountUserId);

    long getCountHolderAgent(Integer accountUserId);

    /**
     * 根据运营区域id查询品牌id 递归
     * @param accountId
     * @return
     */
    //Account getBrandConfig(Integer accountId,Integer time);

    /**
     * 获取所有
     *
     * @return
     */
    List<Account> getAll();

    /**
     * 根据accountId，向上查询type
     *
     * @param accountId
     * @param type
     * @return
     */
    Account getByAccountAndType(Integer accountId, Integer type);

    /**
     * 根据类型获取
     *
     * @param type
     * @return
     */
    List<Account> getByType(Integer type);

    /**
     * 模糊查询
     *
     * @param accountIds
     * @param accountName
     * @return
     */
    List<Account> getAccountIdsVague(List<Integer> accountIds, String accountName);

    /**
     * 获取所有区域-品牌
     *
     * @return
     */
    List<Map<String, Object>> getAccountAll();

    /**
     * 根据运营区域查询品牌
     *
     * @param accountId
     * @return
     */
    Integer getByAccount(Integer accountId);

    Map<Integer, List<Integer>> getStageBrandIdAccountIdS();
}
